"""
事件循环

核心知识点：
    1.事件循环 + 回调（驱动生成器，协程）+ epoll（IO多路复用）
    2.asyncio是Python用于解决异步IO编程的一套解决方案。
    3.tornado、gevent、twisted（Scrapy、django channels）
    4.tornado（实现web服务器），django + flask（uwsgi、gunicorn + nginx）
    5.tornado可以直接部署，Nginx + tornado
"""

import time
import asyncio


async def get_html(url):
    print("start get url")
    # await的用法：await Awaitable
    await asyncio.sleep(2)
    print("end get url")


def use_asyncio():
    start_time = time.time()
    # 事件循环
    loop = asyncio.get_event_loop()
    loop.run_until_complete(get_html("http://www.imooc.com"))
    print("耗时：", time.time() - start_time)
    # 输出结果：
    """
    start get url
    end get url
    耗时： 2.017712116241455
    """


if __name__ == '__main__':
    use_asyncio()
